package structs

import (
	"gitee.com/chunanyong/zorm"
	"gitee.com/chunanyong/zorm/decimal"
	"time"
)

// PeopleStructTableName 表名常量,方便直接调用
const PeopleStructTableName = "people"

// PeopleStruct
type PeopleStruct struct {
	//引入默认的struct,隔离IEntityStruct的方法改动
	zorm.EntityStruct

	//Id
	Id int64 `column:"id"`

	//Name
	Name string `column:"name"`

	//Alias
	Alias string `column:"alias"`

	//Age
	Age int `column:"age"`

	//Flag
	Flag int8 `column:"flag"`

	//AnotherFlag
	AnotherFlag int8 `column:"another_flag"`

	//Commit
	Commit string `column:"commit"`

	//First
	First int8 `column:"First"`

	//Bit
	Bit byte `column:"bit"`

	//Small
	Small int32 `column:"small"`

	//DeletedAt
	DeletedAt time.Time `column:"deleted_at"`

	//Score
	Score decimal.Decimal `column:"score"`

	//Number
	Number int `column:"number"`

	//Birth
	Birth time.Time `column:"birth"`

	//Xmlhttprequest
	Xmlhttprequest string `column:"xmlHTTPRequest"`

	//Jstr
	Jstr string `column:"jStr"`

	//Geo
	Geo string `column:"geo"`

	//Mint
	Mint int32 `column:"mint"`

	//Blank
	Blank string `column:"blank"`

	//Remark
	Remark string `column:"remark"`

	//LongRemark
	LongRemark string `column:"long_remark"`

	//------------------数据库字段结束,自定义字段写在下面---------------//
	//如果查询的字段在column tag中没有找到,就会根据名称(不区分大小写,支持 _ 转驼峰)映射到struct的属性上
}

// GetTableName 获取表名称
// IEntityStruct 接口的方法,实体类需要实现!!!
func (entity *PeopleStruct) GetTableName() string {
	return PeopleStructTableName
}

// GetPKColumnName 获取数据库表的主键字段名称.因为要兼容Map,只能是数据库的字段名称
// 不支持联合主键,变通认为无主键,业务控制实现(艰难取舍)
// 如果没有主键,也需要实现这个方法, return "" 即可
// IEntityStruct 接口的方法,实体类需要实现!!!
func (entity *PeopleStruct) GetPKColumnName() string {
	//如果没有主键
	//return ""
	return "id"
}
